package cuiyt.offer;

/**
 * @author cyt
 * @create 2020-05-30 15:30
 */
public class T37 {
    /**
     * 请实现一个函数，用来判断一颗二叉树是不是对称的。注意，
     * 如果一个二叉树同此二叉树的镜像是同样的，定义其为对称的
     * <p>
     * 注意：
     * 二叉树是空树的话， 它是对称的
     */
    boolean isSymmetrical(TreeNode pRoot) {
        if (pRoot == null) return true;
        return isOk(pRoot.left, pRoot.right);
    }

    boolean isOk(TreeNode l, TreeNode r) {
        if (l == null && r == null) {
            return true;
        }
        if (l != null && r != null) {
            return l.val == r.val && isOk(l.left, r.right) && isOk(l.right, r.left);
        }
        return false;
    }
}
